package com.designpattern.singleton;

/**
 * 单例模式：
 * volatile防止指令重排序。
 * 使用了synchronized进行同步处理。
 * 双重检查单例：以前被认为最完美的
 */
public class Main06 {
    private static volatile Main06 INSTANCE;//防止语句重排。JIT

    private Main06() {

    }

    //
    public static Main06 getInstance() {
        if (INSTANCE == null) {
            synchronized (Main06.class) {
                if (INSTANCE == null) {
                    //            try {
//                Thread.sleep(1000);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
                    INSTANCE = new Main06();
                }
            }
        }
        return INSTANCE;
    }
}
